﻿using System.Xml.Serialization;
using System.Xml.Schema;

namespace DoxytypeObjects
{
    [XmlRoot("doxygenindex", Namespace = "", IsNullable = false)]
    public partial class DoxygenIndexType
    {
        [XmlElement("compound", Form = XmlSchemaForm.Unqualified)]
        public CompoundType[] compound { get; set; }

        [XmlAttribute]
        public string version { get; set; }
    }

    public partial class CompoundType
    {
        [XmlElement(Form = XmlSchemaForm.Unqualified)]
        public string name { get; set; }

        [XmlElement("member", Form = XmlSchemaForm.Unqualified)]
        public MemberType[] member { get; set; }

        [XmlAttribute]
        public string refid { get; set; }

        [XmlAttribute]
        public CompoundKind kind { get; set; }
    }

    public partial class MemberType
    {
        [XmlElement(Form = XmlSchemaForm.Unqualified)]
        public string name { get; set; }

        [XmlAttribute]
        public string refid { get; set; }

        [XmlAttribute]
        public MemberKind kind { get; set; }
    }

    public enum MemberKind
    {
        define,
        property,
        [XmlEnum("event")]
        _event,
        variable,
        typedef,
        [XmlEnum("enum")]
        _enum,
        enumvalue,
        function,
        signal,
        prototype,
        friend,
        dcop,
        slot
    }

    public enum CompoundKind
    {
        [XmlEnum("class")]
        _class,
        [XmlEnum("struct")]
        _struct,
        union,
        [XmlEnum("interface")]
        _interface,
        protocol,
        category,
        exception,
        file,
        [XmlEnum("namespace")]
        _namespace,
        group,
        page,
        example,
        dir
    }
}